package com.xiyu.service.vo.elder.info.baseVO;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import jakarta.validation.constraints.*;
import org.springframework.format.annotation.DateTimeFormat;
import static com.xiyu.service.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
import java.time.LocalDateTime;

/**
 * 老人基本信息 Base VO，提供给添加、修改、详细的子 VO 使用
 * 如果子 VO 存在差异的字段，请不要添加到这里，影响 Swagger 文档生成
 */
@Data
public class InfoBase {

    @Schema(description = "姓名", requiredMode = Schema.RequiredMode.REQUIRED, example = "朱元璋")
    private String name;

    @Schema(description = "身份证号", example = "1302311991080624123")
    private String identityCard;

    @Schema(description = "性别", example = "0男 1女")
    private Integer sex;

    @Schema(description = "手机号")
    private String mobile;

    @Schema(description = "婚姻状况", example = "0未婚 1已婚 2离异 4丧偶")
    private Long maritalStatus;

    @Schema(description = "出生日期", example = "2021-11-11")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime birthday;

    @Schema(description = "生日类型", example = "0公历 1农历")
    private Integer birthdayType;

    @Schema(description = "老人类别", example = "0 失能老人 1自理老人 2半自理老人 3失智老人")
    private Integer type;

    @Schema(description = "居住情况", example = "0独自居住 1与配偶居住 2与子女居住 3其他 4与父母同住")
    private Integer liveType;

    @Schema(description = "家庭地址")
    private String address;

    @Schema(description = "户籍地址")
    private String domicileAddress;

    @Schema(description = "政治面貌")
    private String politicalOutlook;

    @Schema(description = "助老卡号")
    private String careCard;

    @Schema(description = "经济来源")
    private String financial;

    @Schema(description = "月收入")
    private String monthlyIncome;

    @Schema(description = "医疗保障")
    private String healthCare;

    @Schema(description = "社保卡号")
    private String socialSecurityNumber;

    @Schema(description = "血型")
    private String bloodType;

    @Schema(description = "文化程度")
    private String degreeEducation;

    @Schema(description = "专业")
    private String professional;

    @Schema(description = "职称")
    private String professionalTitle;

    @Schema(description = "原单位")
    private String srcUnit;

    @Schema(description = "性格心理")
    private String personality;

    @Schema(description = "饮食特点")
    private String dietaryCharacteristics;

    @Schema(description = "特长")
    private String speciality;

    @Schema(description = "爱好")
    private String hobby;

    @Schema(description = "图片")
    private String picture;

    @Schema(description = "合同签订日期")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime contractSignDate;

    @Schema(description = "合同到期日期")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime contractExpireDate;

    @Schema(description = "登记入住日期")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime checkinDate;

}
